<?
	/*
		Контроллер для работы со вставками.
	*/

	class c_insertion_controller extends c_base_controller
	{
		var $cache = array();

		// Показать список вставок.
		function index($args)
		{
			// Создали папку если нужно.
			if (!file_exists($this->data_path.'items'))
			{
				mkdir($this->data_path.'items', 0777, true);				
				chmod($this->data_path.'items', 0777);
			}
			
			$ins_name = basename($args[2]);
			$ins_path = $this->data_path.'items/'.$ins_name.'.php';

			if ($ins_name && file_exists($ins_path))
			{
				include($ins_path);
			}
			else
			{
				global $mvc;
				$this->show_list($args);
				if ($args[2])
					$mvc->message('Warning. No insertion '.$ins_path);
			}
		}
		
		// Сисок всех вставок.
		function show_list($args)
		{
			$this->insertions = glob($this->data_path.'items/*.php');
			
			if ($this->insertions)
			{
				foreach($this->insertions as $k => $file)
				{
					$this->insertions[$k] = substr(basename($file), 0, -4);
				}
				usort($this->insertions, strcasecmp);
			}
		
			return $this->show('index');
		}
		
		// Путь к файлу вставки с именем $name.
		function filepath($name)
		{
			$ins_name = basename($name);
			return $this->data_path.'items/'.$ins_name.'.php';
			
		}
		
		// Вызвать вставку, с параметрами.
		function _call($name, &$args = array())
		{
			global $mvc;
			$ins_name = basename($name);
			$ins_path = $this->data_path.'items/'.$ins_name.'.php';
			if (file_exists($ins_path))
			{
				include($ins_path);
			}
			else
			{				
				$mvc->message('Warning. No insertion '.$ins_path);
				return 'Warning. No insertion '.$ins_path;
			}
		}		
		
		// Вызвать редактор вставки.
		function edit($args)
		{
			$ins_name = basename($args[2]);
			$ins_path = $this->data_path.'items/'.$ins_name.'.php';
			$this->insertion = array('name' => $ins_name);
			if (file_exists($ins_path))
			{
				$f = fopen($ins_path, 'r');
				$this->insertion['code'] = fread($f, 65536);
				fclose($f);
			}		
			return $this->show('edit');
		}

		// Сохранить вставку.
		function save($args)
		{
			$ins_name = basename($args['f_name']);
			$ins_path = $this->data_path.'items/'.$ins_name.'.php';
			$f = fopen($ins_path, 'w+');
			if ($f)
			{
				fwrite($f, stripslashes($args['f_code']));
				fclose($f);
			}		
			return $this->show_list($args);
		}
		
		function del($args)
		{
			$ins_name = basename($args[2]);
			$ins_path = $this->data_path.'items/'.$ins_name.'.php';
			if (file_exists($ins_path))
			{
				unlink($ins_path);
			}
			else
			{
				global $mvc;
				$mvc->message('Warning. No insertion '.$ins_path, 1);
			}
			return $this->show_list($args);
		}
		
		function view($args)
		{
			global $mvc;
			$ins_name = basename($args[2]);
			$ins_path = $this->data_path.'items/'.$ins_name.'.php';
			if (file_exists($ins_path))
			{
				include($ins_path);
			}
			else
			{				
				$mvc->message('Warning. No insertion '.$ins_path);
				echo 'Warning. No insertion '.$ins_path;
			}
			echo '<hr><a href="'.$this->base_url.'">Back</a>';
		}
	}
?>